
/* 
       #include <poll.h>
       int poll(struct pollfd *fds, // 动态数组, 
                nfds_t nfds, // 表示 fds 数组中包含的 struct pollfd 元素的数量
                 int timeout // 时间单位ms, timeout=0; 非阻塞等待, timeout<0 阻塞等待, timeout>0在timeout以内阻塞, 超时返回一次
                );
        返回值 : select 相同 , -1 错误 ; > 0 代表几个事件到来,  == 0超时返回

            struct pollfd {
               int   fd;         // file descriptor 
               short events;     // requested events //用户告诉内核关心的事件, 用户 -> 内核
               short revents;    // returned events  // 内核告诉用户什么事件就绪了 , 内核 -> 用户
               // 这样poll 就不会 每次调用重新设置参数
           };
        // poll 解决了 1.select 等待的事件有上限的问题 2.不需要每次调用重新设定参数

        // poll 的缺点 1.存在遍历的问题 线性便利的问题 存在效率的问题


*/
